<?php
namespace System\library;

use System\library\url\Rewriting;
use System\library\utility\Tools;

/**
 * <b>Class</b> :        Url<br>
 * <b>Fonction</b> :     Url utilitaire, permet de generer des urls...
 * <br>
 * @version              1.0
 * @author               Dread <dreadlokeur@gmail.com>
 * @license              Licence publique générale GNU http://www.gnu.org/licenses/gpl.html
 * @copyright            Copyright 2011 - MidichloriansPHP and contributors
 * @package              System
 * @subpackage           library
 */
class Url {
        /**
     * Permet de crer un lien en fonction de la configuration d'apache: url rewriting ou non
     *
     * @access public
     * @static
     * @param string $file le fichier vers lequel pointe le lien
     * @param bool $rewrite réécrire l'url
     * @param array $args les arguments du lien: ?key=value ...
     * @return string Le lien generé par la fonction
     *
     * @see Rewriting
     *
     * @example: createUrlLink('index', array('key' => 'value')); pointe vers: index.php?key=value si url rewriting désactivé, sinon: index-key-value.html
     */
    public static function createUrlLink($file, $rewrite, $args = array()) {
        //URL réecrite
        if ($rewrite) {
            $url = new Rewriting();
            $url->setUrlParams($file);
            if ($args)
                $url->setUrlArgs($args);

            return $url->getUrl();
        } else {
            $link = (count($args) > 0) ? '?' : '';
            foreach ($args as $k => $v)
                $link .= Tools::stringToUrl($k) . '=' . Tools::stringToUrl($v) . '&amp;';

            return $file . '.php' . trim($link, '&amp;');
        }
    }
        /**
     * Permet de créer un lien vers un controller (en fonction de la config apache: url rewriting, ou non...) NB: pour l'url rewriting, si la règle n'existe pas, la methode genere une exception
     *
     * @access public
     * @static
     * @param <string> $file : le fichier vers lequel pointe l'url
     * @param <string> $controller: le controller vers lequel pointe le lien
     * @param <string> $action : l'action vers laquelle pointe le lien
     * @param <array> $args: les arguments du lien: ?key=value ...
     * @return @return <string> Le lien generé par la fonction
     *
     * @see Utils
     * @see Rewriting
     *
     * @example: createUrlControllerLink('index', 'test', 'test', array('key' => 'value')); pointe vers: index.php?controller=test&action=test&key=value si url rewriting désactivé, sinon: index/test/test/key-value.html
     */
    public static function createUrlControllerLink($file, $controller, $action, $args = array()) {
        //URL réecrite
        if (Config::getCons('URL_REWRITING')) {
            $url = new Rewriting();
            $url->setIsControllerUrl(true);
            $url->setUrlParams($file, $controller, $action);
            if ($args)
                $url->setUrlArgs($args);
            return $url->getUrl();
        } else {
            $link = $file . '.php?controller=' . Tools::stringToUrl($controller) . '&amp;action=' . Tools::stringToUrl($action);
            foreach ($args as $k => $v)
                $link .= '&amp;' . Tools::stringToUrl($k) . '=' . Tools::stringToUrl($v);

            return $link;
        }
    }
}
?>
